package com.fmyd.qizhuazhua.interfaces;

import android.text.TextUtils;

import com.android.volley.VolleyError;
import com.google.gson.Gson;

import java.lang.reflect.Type;

/**
 * 文 件 名:
 * 描    述:
 * 创 建 人:  Xian
 * 创建时间:  2016/4/6 0006 上午 11:53
 */
public class BaseResponseWrapper implements ResponseWrapper {

    @Override
    public <T> T parse(String response, Type x) throws VolleyError {
        Gson gson = new Gson();

        if (response != null) {
            return parseBody(gson, response, x);
        }
        return null;
    }

    @Override
    public <T> T parse(String response, Class<T> classOfT) throws VolleyError {
        return parse(response, (Type) classOfT);
    }

    /**
     * 解析响应数据体
     *
     * @param gson
     * @param data
     * @param x
     * @param <T>
     * @return
     */
    @SuppressWarnings("unchecked")
    private <T>T parseBody(Gson gson, String data, Type x) {

        if (!TextUtils.isEmpty(data) &&
                !data.equals("\"\"") &&
                !data.equals("{}") &&
                !data.equals("[]")) {

            return gson.fromJson(data, x);
        } else {

            if (x instanceof Class) {
                if (((Class) x).getName().equals(EmptyEntity.class.getName())) {
                    //如果type是空实体，则转换成EmptyEntity
                    EmptyEntity emptyEntity = new EmptyEntity();
                    return (T) emptyEntity;
                }
            }
        }
        return null;
    }


    public static class EmptyEntity {

    }
}
